import pandas as pd
import easygui as g


class ReplaceExcel:
    def __init__(self):
        # 本程序的目标是根据姓名将来源表中的班级填至目标表中
        lj1 = g.fileopenbox(msg='请选择需要填充的excel表', title='选择目标', default='c:\\Python37\\',
                            filetypes=['*.xls', '*.xlsx'])
        lj2 = g.fileopenbox(msg='请选择来源的excel表', title='选择来源', default='c:\\Python37\\',
                            filetypes=['*.xls', '*.xlsx'])
        self.df1 = pd.read_excel(lj1)
        self.df2 = pd.read_excel(lj2)

        self.key = g.enterbox('请输入关联字段所在的列名')
        self.tc_col = g.enterbox('请输入需要填充的列名')

    def replace_excel(self):
        # line_num 来源表中共有多少人
        line_num = len(self.df1)
        for m in range(line_num):
            name = self.df1.loc[m, self.key]
            # 求来源表中的姓名在目标表中哪些行中
            hh = self.df2.loc[self.df2[self.key] == name].index
            for i in range(len(hh)):
                self.df2.loc[hh[i], self.tc_col] = self.df1.loc[m, self.tc_col]

        print(self.df2)


if __name__ == '__main__':
    r = ReplaceExcel()
    r.replace_excel()
